%% main.tex --- файл-обертка для диплома

\documentclass[russian,utf8,simple,floatsection]{eskdtext} 

\include{defs}  % вставляем содержимое служебных инструкций из defs.tex

\ESKDcolumnII{\small{Тестирование на модельных и реальных примерах.}}
\setcounter{section}{4}
\begin{document}
\section{Тестирование на модельных и реальных примерах}
\subsection{Разработка пользовательского интерфейса.}
Когда говорят о научных основах проектирования пользовательских
интерфейсов, в первую очередь упоминают термин HCI. HCI — это
аббревиатура английского Human-Computer Interaction, что переводится
как "взаимодействие человека и компьютера". На Западе HCI — это целая
профессия, ей обучают в университетах, выдавая дипломы "Специалист по
HCI". Издается много журналов по этой теме, существует большое
количество Web-сайтов. В России, к сожалению, эта наука не пользуется
особой популярностью например, у нас настоящих специалистов по HCI
можно буквально пересчитать по пальцам одной руки. 

Как легко догадаться по названию, составными частями HCI являются:
\begin{itemize}
\item человек (пользователь)
\item компьютер
\item их взаимодействие.
\end{itemize}

Пользовательский интерфейс (англ. user interface, UI) является
своеобразным коммуникационным каналом, по которому осуществляется
взаимодействие пользователя и компьютера. 

Лучший пользовательский интерфейс — это такой интерфейс, которому
пользователь не должен уделять много внимания, почти не замечать
его. Пользователь просто работает, вместо того, чтобы размышлять,
какую кнопку нажать или где щелкнуть мышью. Такой интерфейс называют
прозрачным — пользователь как бы смотрит сквозь него на свою работу. 

Чтобы создать эффективный интерфейс, который делал бы работу с
программой приятной, нужно понимать, какие задачи будут решать
пользователи с помощью данной программы и какие требования к
интерфейсу могут возникнуть у пользователей. Это сделать гораздо
легче, если вы используете свою программу для собственных нужд, ведь в
данном случае вы являетесь не только разработчиком, но и пользователем
программы, смотрите на нее глазами ее аудитории. 

Огромную роль играет интуиция — если разработчик сам терпеть не может
некрасивые и неудобные интерфейсы, то при создании собственной
программы он будет чувствовать, где и какой именно элемент нужно
убрать или добавить. Необходимо иметь художественный вкус, чтобы
понимать, что именно придаст интерфейсу красоту и привлекательность. 

Западные исследователи в области HCI сформулировали основные принципы
проектирования пользовательских интерфейсов компьютерных программ. Как
и в любой другой науке, существует довольно много различных методик и
классификаций, которые можно найти в книгах по HCI, выпущенных за
рубежом, а также на иностранных Web-сайтах. 

Если говорить о самых общих принципах проектирования пользовательских
интерфейсов, то можно назвать три основных положения: 
\begin{itemize}
\item Программа должна помогать выполнить задачу, а не становиться этой задачей.
\item При работе с программой пользователь не должен ощущать себя дураком.
\item Программа должна работать так, чтобы пользователь не считал компьютер дураком.
\end{itemize}

Довольно эмоциональные формулировки, но, тем не менее, поразительно верные.

\emph{Первый принцип — это уже упоминавшаяся выше прозрачность
интерфейса.} Интерфейс должен быть легким для освоения и не создавать
перед пользователем преграду, которую он должен будет преодолеть,
чтобы приступить к работе. 

\emph{Второй принцип часто нарушают те авторы программ, которые слишком
недооценивают умственные способности пользователей.} В глазах таких
разработчиков пользователи видятся толпой этаких бестолковых болванов,
в лучшем случае — беспомощных и нерадивых созданий, не способных
разобраться в самых элементарных ситуациях. Это обусловлено разными
причинами. 

Во-первых, традиционным слегка высокомерным отношением программистов к
простым пользователям. Это еще можно было понять в восьмидесятых и
начале девяностых годов XX века, когда обычные персональные компьютеры
не имели доступных широкой аудитории программных и аппаратных средств
для построения привлекательных графических интерфейсов и работы с
ними. Самой распространенной операционной системой в то время была MS
DOS, основанная на интерфейсе командной строки. Поэтому эффективно
работать с персональным компьютером могли люди только с довольно
серьезной подготовкой. Кроме того, парк "персоналок" был относительно
невелик даже в США, не говоря уже об остальных странах, и, как
следствие, число пользователей компьютеров было небольшим. 

Сегодня же такой пренебрежительный взгляд на пользователя явно
неуместен. Работа с персональным компьютером предполагает относительно
не большую начальную подготовку пользователя: интерфейсы компьютерных
программ, в первую очередь операционной системы Windows, являющейся
законодателем мод в индустрии массового программного обеспечения,
становятся все проще и доступнее для понимания людей. Да и число
компьютеров в мире сегодня в несколько раз больше, чем десять лет
назад. 

Вторая причина слишком большой недоверчивости программистов к
познаниям и квалификации пользователей - чрезмерное увлечение
построением так называемой "защиты от дурака". Дело в том, что
классические учебные курсы по программированию учат, что большинство
ошибок в работе программы вызываются не дефектами исходного кода или
программного окружения, а действиями пользователя — например, вводом
данных неправильного формата (допустим, текста вместо цифр). Поэтому
программист при разработке приложения должен написать функции по
проверке результатов как можно большего числа действий пользователя и
предусмотреть максимальное количество вариантов развития событий. Это
совершенно правильный подход, но многие программисты настолько
усложняют "защиту от дурака", делают ее такой громоздкой, что работа
пользователя с программой начинает напоминать известное "шаг вправо,
шаг влево считается побегом". Происходит довольно обычная вещь: то,
что задумывалось как решение проблемы, само начинает создавать
проблемы. 

И, наконец, третья причина во многом обусловлена поведением самих
пользователей. Часто при возникновении малейших затруднений при работе
с программой пользователь тут же обращается в службу технической
поддержки, не удосужившись даже взглянуть на справочную систему
продукта, посмотреть секцию "Ответы на частые вопросы" на Web-сайте
программы или даже просто чуть-чуть подумать! Отчасти тут вина самих
авторов программ. Как говорят опытные разработчики пользовательских
интерфейсов: 

"Если уже на этапе знакомства с программой пользователь вынужден
обращаться к справочной системе, над интерфейсом нужно серьезно
работать". 

Поэтому, чтобы соблюсти второй из общих принципов построения
интерфейсов и не давать пользователю повода почувствовать, будто его
принимают за идиота, не нужно давать разрабатываемой программе слишком
большие полномочия и право указывать пользователю, что именно ему
делать. Некоторые программисты не знают или не желают осознавать этого
и загоняют пользователей своих программных продуктов в тесные рамки,
навязывая определенный стиль работы. 

Один из примеров такого неправильного отношения к пользователю
является отказ программы выполнить вполне естественную с точки зрения
пользователя программных продуктов такого рода операцию и вывод
диалогового окна, требующего выполнить какую-то другую
последовательность действий. Этим "прославился", например, известный
текстовый редактор "Блокнот" из состава Windows 95. Если пользователь
открывал эту программу и решал перед началом набора текста дать
создаваемому "Блокнотом" по умолчанию файлу "Untitled" какое-нибудь
имя, выбрав из меню команду Сохранить как, редактор отказывался
сделать это, показывая сообщение: "Вы не ввели какой-либо текст, чтобы
его можно было сохранить. Наберите какой-нибудь текст, а затем
попытайтесь [сохранить его] снова". Этим создатели "Блокнота" не
только отвергли стиль работы очень многих пользователей (перед началом
набора текста дать имя файла), но сбили с толку и тех, кто был знаком
с "Блокнотом" по предыдущим версиям Windows. Например, в
шестнадцатиразрядной Windows 3.1 "Блокнот" позволял сохранять пустые
файлы безо всяких проблем. Опытные пользователи, знакомые с принципами
работы операционной системы, тоже были в недоумении: если из
контекстного меню Проводника Windows в меню Создать выбрать пункт
Текстовый документ, то получившийся файл длиной 0 байт открывается
"Блокнотом" без каких-либо затруднений. К счастью, в последующих
версиях Windows "Блокнот" стал более дружественен к пользователю. 

Другой пример недооценки возможностей пользователя — вывод
информационных сообщений в ситуациях, когда этого не требуется. Многие
авторы наделяют свои программы излишней "болтливостью" из благих
намерений — например, для того, чтобы облегчить освоение продукта или
информировать пользователей о полезных функциях программы. Однако
вполне может оказаться так, что пользователь уже достаточно уверенно
чувствует себя при работе с программой и не нуждается в подсказках,
выскакивающих каждую минуту, а некоторые полезные, с точки зрения
автора программного продукта, функции для конкретного пользователя
таковыми не являются, Поэтому среди разработчиков программного
обеспечения хорошим тоном считается предоставление пользователю
возможности отключить вывод информационных сообщений. Это позволяет
сохранить легкость освоения продукта для начинающих пользователей и
одновременно с этим добиться, чтобы информационные сообщения не
вызывали у опытных пользователей раздражения. 

\emph{И, наконец, третий принцип — "Программа должна работать так, чтобы
пользователь не считал компьютер дураком".}

Несмотря на стремительное развитие информационных технологий, многие
компьютерные программы все еще имеют примитивный искусственный
интеллект. Они прерывают работу пользователя глупыми вопросами и
выводят на экран бессмысленные сообщения, повергая его в недоумение в
самых простых ситуациях. В результате многие люди, работающие с
компьютерами, раздраженно восклицают: "Как мне надоела эта тупая
машина!" 

\emph{Примечание}

Конечно, искусственный интеллект компьютерных программ в основном
зависит от усилий их авторов, а не характеристик аппаратного
обеспечения. Однако у большинства пользователей компьютер
ассоциируется именно с программами, которые на нем работают, и плохое
впечатление от использования программного обеспечения автоматически
переносится на сам компьютер. 

Примеров таких неудачных решений в области интерфейсов существует
очень много — как среди продуктов известных компаний, так и среди
программ мелких разработчиков. Вот один из них: система управления
базами данных Microsoft Access запрашивает у пользователя
подтверждение обновления информации в таблице. Все бы хорошо, если бы
не бессмысленность этого сообщения: обновления данных все равно не
будет в любом случае, т. к. количество строк, в которых были изменены
данные, равно нулю. 

А этот пример особенно часто приводится в качестве иллюстрации к
рассказу о "тупых" интерфейсах. Утилита преобразования текстовых
файлов, включенная в Microsoft Word, способна распознать формат
открываемого файла. Но, тем не менее, она просит пользователя
подтвердить, что структура файла была определена правильно. Во многих
случаях (например, когда человек открывает файл, созданный не им, или
просто при недостатке знаний) он не может указать, каков формат файла
на самом деле. Но, т. к. его все-таки просят сделать выбор, он
начинает колебаться, выбирать из списка другие форматы, что приводит к
некорректным результатам. 

Еще один известный пример интерфейса, который дает повод поразиться
"глупости" компьютера. Если в текстовом редакторе WordPad открыть
обыкновенный текстовый файл и, даже ничего в нем не меняя, попробовать
сохранить его, то программа сообщит, что такая операция "приведет к
потере форматирования". Особую пикантность этой ситуации придает тот
факт, что в текстовом (ASCII) файле какое-либо форматирование
отсутствует изначально. 

Есть и откровенно дурацкие сообщения, которые заставляют задуматься,
почему современный мощный компьютер стоимостью несколько сотен
долларов обладает интеллектом простого калькулятора. Впрочем, очень
часто такие сообщения вызваны ошибками в самой программе. 

Нужно заметить, что, как и в любой другой науке, принципы построения
интерфейсов компьютерных программ тесно взаимосвязаны. Нарушение
одного правила почти наверняка повлечет нарушение и другого. Например,
если при работе пользователя с программой на экране появилось
сообщение, заставляющее усомниться в том, что компьютер может
справиться со своими функциями (третий принцип), то о соблюдении
первого принципа (прозрачность интерфейса) говорить тоже не
приходится, т. к. вместо того, чтобы продолжить работу, человек
вынужден теряться в догадках: "Что бы это значило?" 

\subsection{Описание функционирования}

Главная страница программы представлена на
рисунке~\ref{mainPage}. Слева расположены кнопки навигации: Главная,
Курсовые работы, Курсовые проекты, Литература, Экзаменационные вопросы.

\begin{figure}[!hb]
  \centering
  \includegraphics[angle=0, width=\textwidth]{MainPage}
  \caption{Главная страница.}
  \label{mainPage}
\end{figure}

Окно со списком литературы представлено на
рисунке~\ref{Abiturientu}. В данном разделе представлена следующая
литература: Литература, Электронная литература.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=\textwidth]{Abiturientu}
  \caption{Список литературы.}
  \label{Abiturientu}
\end{figure}

Список методических пособий, доступных в электронном виде, представлен
на рисунке~\ref{Kursi}. Данный список разбит на категории, по предметам.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=\textwidth]{Kursi}
  \caption{Информация о методических пособиях.}
  \label{Kursi}
\end{figure}

Список электронной литературы, представлен
на рисунке~\ref{Predpr}. Данный список разбит на категории, по
предметам.

\begin{figure}[!hb]
  \centering
  \includegraphics[angle=0, width=0.75\textwidth]{Predpr}
  \caption{Информация о электронной литературе.}
  \label{Predpr}
\end{figure}

Перейдя на страницу с билетами(рисунок~\ref{Special}), можно выбрать
предмет и получить список экзаменационных вопросов и/или билетов (если
доступно).

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=\textwidth]{Special}
  \caption{Информация о билетах и вопросах для экзамена.}
  \label{Special}
\end{figure}

Курсовые проекты представлены на рисунке~\ref{Vuzam}.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=0.5\textwidth]{Vuzam}
  \caption{Крусовые проекты и работы.}
  \label{Vuzam}
\end{figure}

Страница администрирования доступна только привилегированным
пользователям. Для входа на страницу администрирование необходимо
ввести login и пароль~\ref{login}. После успешного входа, появляется
главная страница администрирования~\ref{admin_index}. На ней можно
выбрать тематику для настройки. добавить новые записи, отредактировать
старые, а так же удалить имеющиеся.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=0.75\textwidth]{login}
  \caption{Вход на страницу администрирования}
  \label{login}
\end{figure}

\begin{figure}[!hb]
  \centering
  \includegraphics[angle=0, width=0.75\textwidth]{admin_index}
  \caption{Главная страница раздела администрирования.}
  \label{admin_index}
\end{figure}

При нажатии на тематику раздела, появляется страница со списков
записей в данной теме~\ref{changelist}.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=0.75\textwidth]{changelist}
  \caption{Список книг, которые можно редактировать обычным пользователям.}
  \label{changelist}
\end{figure}

При выборе записи, появляется страница,  изображенная на
рисунке~\ref{editform}. Здесь можно изменить имеющиеся данные, а также
проверяется корректность данных. Например, при не заполнении
обязательного поля, появляется страница, с сообщением об
ошибке~\ref{editform_errors}.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=\textwidth]{editform}
  \caption{Форма редактирования таблицы со списком книг.}
  \label{editform}
\end{figure}

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=0.75\textwidth]{editform_errors}
  \caption{Сообщение об ошибке.}
  \label{editform_errors}
\end{figure}

История изменений хранится для каждой таблицы. В данной истории
отображаются сами изменения, а также имя пользователя, который из
сделал~\ref{history}.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=\textwidth]{history}
  \caption{История изменений.}
  \label{history}
\end{figure}

При нажатии на кнопку удаления, появляется страница с запросом на
подтверждение удаления~\ref{delete_confirm}.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=0.75\textwidth]{delete_confirm}
  \caption{Форма удаления кортежа из таблицы.}
  \label{delete_confirm}
\end{figure}

После проделанных манипуляций, окно со списком тематик выгладят, как
на рисунке~\ref{changelist2}.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=\textwidth]{changelist2}
  \caption{Список книг после редактирования.}
  \label{changelist2}
\end{figure}

\end{document}
